﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Proyecto7CAD.Properties;
using System.Configuration;
using System.Data;
using System.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Proyecto7CAD.BDProyecto7DataSetTableAdapters;
using System.Collections;

namespace Proyecto7CAD
{
    public class PersonajeCAD
    {
        SqlConnection conexion = new SqlConnection(Settings.Default.BDProyecto7ConnectionString);

        public string insertarPersonaje(string tipo, int ataque, int vida, int defensa)
        {


            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Personaje ", conexion);
                da.Fill(bdvirtual, "personaje"); //dataset con el nombre de personaje
                //Obtenemos la tabla personajes
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["personaje"];
                //Creamos la nueva fila a insertar
                DataRow nuevafila = tabla.NewRow();

                nuevafila[1] = tipo;
                nuevafila[2] = ataque;
                nuevafila[3] = vida;
                nuevafila[4] = defensa;


                tabla.Rows.Add(nuevafila);

                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "personaje");


            }
            catch (Exception ex)
            {
                return ex.Message;
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public string borrarPersonaje(int id)
        {
            int i = 0;

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Personaje ", conexion);

                da.Fill(bdvirtual, "personaje");
                //Obtenemos la tabla personajes
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["personaje"];

                foreach (DataRow registro in tabla.Rows)
                {
                    if ((int)registro["idPersonaje"] == id)
                    {
                        tabla.Rows[i].Delete();
                    }
                    i++;
                }

                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "personaje");
            }
            catch (Exception ex)
            {
                throw ex;
                //return ex.Message;
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public string editarPersonaje(int id, string tipo, int ataque, int vida, int defensa)
        {
            //string cadenaConexion = Settings.Default.BDProyecto7ConnectionString;
            //SqlConnection conex = new SqlConnection(cadenaConexion);

            try
            {
                int i = 0;
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from Personaje", conexion);
                da.Fill(bdvirtual, "personaje"); //dataset con el nombre de personaje
                //Obtenemos la tabla personajes
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["personaje"];
                //tabla.Rows.

                foreach (DataRow registro in tabla.Rows)
                {
                    if ((int)registro["idPersonaje"] == id)
                    {
                        tabla.Rows[i][1] = tipo;
                        tabla.Rows[i][2] = ataque;
                        tabla.Rows[i][3] = vida;
                        tabla.Rows[i][4] = defensa;
                    }
                    i++;
                }


                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                da.Update(bdvirtual, "personaje");

            }
            catch (Exception ex)
            {
                throw ex;
                //return ex.Message;              
            }
            finally
            {
                conexion.Close();
            }

            conexion.Close();
            return "OK";
        }

        public DataSet obtenerPersonajes()
        {
            try
            {
                DataSet bd = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter("select * from Personaje", conexion);
                da.Fill(bd, "personaje");
                return bd;
            }

            catch (Exception ex)
            {
                DataSet bd = new DataSet();
                throw ex;
            }
            finally
            {
                conexion.Close();
            }
        }

        public DataTable obtenerPersonaje(int id)
        {

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from personaje where idPersonaje=" + id.ToString(), conexion);

                da.Fill(bdvirtual, "personaje");

                DataTable tabla = bdvirtual.Tables["personaje"];

                return tabla;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conexion.Close();
            }
        }

        public DataTable obtenerPersonajeNombre(string nombre, int vidadesde = -1, int vidahasta = -1)
        {

            try
            {
                DataSet bdvirtual = new DataSet();
                SqlDataAdapter da = null;
                if (vidadesde == -1 && vidahasta == -1)
                {
                    da = new SqlDataAdapter("select * from personaje where tipoPersonaje LIKE '%" + nombre + "%'", conexion);
                }
                else if (vidadesde == -1)
                {
                    da = new SqlDataAdapter("select * from personaje where vidaPersonaje<=" + vidahasta + " AND tipoPersonaje LIKE '%" + nombre + "%'", conexion);
                }
                else if (vidahasta == -1)
                {
                    da = new SqlDataAdapter("select * from personaje where vidaPersonaje>" + vidadesde + " AND tipoPersonaje LIKE '%" + nombre + "%'", conexion);
                }
                else
                {
                    da = new SqlDataAdapter("select * from personaje where vidaPersonaje<=" + vidahasta + " AND vidaPersonaje>" + vidadesde + " AND tipoPersonaje LIKE '%" + nombre + "%'", conexion);
                }
                da.Fill(bdvirtual, "personaje");
                DataTable tabla = new DataTable();
                tabla = bdvirtual.Tables["personaje"];

                /* ENUsuario usuario = new ENUsuario();

                 foreach (DataRow registro in bdvirtual.Tables["personaje"].Rows)
                 {
                     usuario.IdUsuario = int.Parse(registro[0].ToString());
                     usuario.NombreUsuario = registro[1].ToString();
                     usuario.ClaveUsuario = registro[2].ToString();
                     usuario.PersonajeUsuario = int.Parse(registro[3].ToString());
                     usuario.CorreoUsuario = registro[4].ToString();
                     usuario.ExperienciaUsuario = int.Parse(registro[5].ToString());
                     usuario.DineroUsuario = int.Parse(registro[6].ToString());
                     usuario.NivelUsuario = int.Parse(registro[7].ToString());
                 }
                 */
                return tabla;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conexion.Close();
            }
        }
    }
}
